# _*_ coding: utf-8 _*_
# .@FileName:menuUI
# .@Data....:2025-02-09 : 23 : 52
# .@Aurhor..:LiuJingYu
"""
launch:
from __future__ import unicode_literals, print_function
import maya.cmds as mc
"""

import maya
import maya.cmds as mc
"""
# 第一版 
MAIN_MENU_NAME = "ipuxin_plug"
MAIN_MENU_VALUE = "IpuxinMenu"
PRE_PLUGIN_NAME = "i_"

menu_item_list = [
    ['Animate',['playblast']],
    ['Rendering',['new_distribute_layer','new_preset_light']],
    ['Rigging',['HZrig_controller']]
]

gMainWindow = maya.mel.eval('$tmpVar=$gMainWindow')

main_menu = mc.menu(MAIN_MENU_VALUE,label=MAIN_MENU_NAME,tearOff=True, parent=gMainWindow)

for menu_name in menu_item_list:
    FAR_MENU_NAME = menu_name[0]
    mc.menuItem(PRE_PLUGIN_NAME + FAR_MENU_NAME,label=FAR_MENU_NAME,subMenu=True,tearOff=True,
            parent=MAIN_MENU_VALUE)

    for sub_menu_name in menu_name[1]:
        mc.menuItem(PRE_PLUGIN_NAME + sub_menu_name, label=sub_menu_name,
                    parent=PRE_PLUGIN_NAME + FAR_MENU_NAME)


"""

# 第二版 优化后

# 定义主菜单的名称和值
MAIN_MENU_NAME = "ipuxin_plug"
MAIN_MENU_VALUE = "IpuxinMenu"
# 插件名称前缀
PRE_PLUGIN_NAME = "i_"

# 菜单项目列表，每个子列表的第一个元素是主菜单项名称，后续元素是该主菜单项下的子菜单项名称
menu_item_list = [
    ['Animate', ['playblast']],
    ['Rendering', ['new_distribute_layer', 'new_preset_light']],
    ['Rigging', ['HZrig_controller']]
]

def create_main_menu():
    """
    创建主菜单并添加到 Maya 的主窗口中。

    返回:
        str: 创建的主菜单的名称。
    """
    # 获取 Maya 主窗口的名称
    gMainWindow = maya.mel.eval('$tmpVar=$gMainWindow')
    # 创建主菜单，设置标签、可分离属性，并指定父窗口为 Maya 主窗口
    main_menu = mc.menu(MAIN_MENU_VALUE, label=MAIN_MENU_NAME, tearOff=True, parent=gMainWindow)
    return main_menu

def create_sub_menus(main_menu_name):
    """
    根据 menu_item_list 创建主菜单项和子菜单项。

    参数:
        main_menu_name (str): 主菜单的名称。
    """
    for menu_name_info in menu_item_list:
        # 获取主菜单项的名称
        far_menu_name = menu_name_info[0]
        # 生成主菜单项的完整名称，添加前缀
        full_far_menu_name = PRE_PLUGIN_NAME + far_menu_name
        # 创建主菜单项，设置标签、可分离属性，并指定父菜单为主菜单
        mc.menuItem(full_far_menu_name, label=far_menu_name, subMenu=True, tearOff=True,
                    parent=main_menu_name)

        for sub_menu_name in menu_name_info[1]:
            # 生成子菜单项的完整名称，添加前缀
            full_sub_menu_name = PRE_PLUGIN_NAME + sub_menu_name
            # 创建子菜单项，设置标签，并指定父菜单为主菜单项
            mc.menuItem(full_sub_menu_name, label=sub_menu_name,
                        parent=full_far_menu_name)

def setup_maya_menu():
    """
    设置 Maya 菜单，包括创建主菜单和添加子菜单。
    """
    # 创建主菜单
    main_menu = create_main_menu()
    # 创建子菜单
    create_sub_menus(main_menu)

if __name__ == "__main__":
    # 调用设置 Maya 菜单的函数
    setup_maya_menu()